home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Technology Seed / Jan. '98 ATS.toast / QuickTime™ 3.0b11 / QTPublicInterfaces / CIncludes / QD3DLight.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-12  |  9.8 KB  |  360 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DLight.h
  3.  
  4.      Contains:    Generic light routines                                             
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.1
  7.                  Release:    QuickTime 3.0 Beta
  8.  
  9.      Copyright:    © 1995-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __QD3DLIGHT__
  19. #define __QD3DLIGHT__
  20.  
  21. #ifndef __QD3D__
  22. #include <QD3D.h>
  23. #endif
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DLIGHT__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                            Enum Definitions                                 **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63.  
  64. enum {
  65.     kQ3AttenuationTypeNone        = 0,
  66.     kQ3AttenuationTypeInverseDistance = 1,
  67.     kQ3AttenuationTypeInverseDistanceSquared = 2
  68. };
  69.  
  70. typedef unsigned long                     TQ3AttenuationType;
  71.  
  72. enum {
  73.     kQ3FallOffTypeNone            = 0,
  74.     kQ3FallOffTypeLinear        = 1,
  75.     kQ3FallOffTypeExponential    = 2,
  76.     kQ3FallOffTypeCosine        = 3
  77. };
  78.  
  79. typedef unsigned long                     TQ3FallOffType;
  80. /******************************************************************************
  81.  **                                                                             **
  82.  **                            Data Structure Definitions                         **
  83.  **                                                                             **
  84.  *****************************************************************************/
  85.  
  86. struct TQ3LightData {
  87.     TQ3Boolean                         isOn;
  88.     float                             brightness;
  89.     TQ3ColorRGB                     color;
  90. };
  91. typedef struct TQ3LightData                TQ3LightData;
  92.  
  93. struct TQ3DirectionalLightData {
  94.     TQ3LightData                     lightData;
  95.     TQ3Boolean                         castsShadows;
  96.     TQ3Vector3D                     direction;
  97. };
  98. typedef struct TQ3DirectionalLightData    TQ3DirectionalLightData;
  99.  
  100. struct TQ3PointLightData {
  101.     TQ3LightData                     lightData;
  102.     TQ3Boolean                         castsShadows;
  103.     TQ3AttenuationType                 attenuation;
  104.     TQ3Point3D                         location;
  105. };
  106. typedef struct TQ3PointLightData        TQ3PointLightData;
  107.  
  108. struct TQ3SpotLightData {
  109.     TQ3LightData                     lightData;
  110.     TQ3Boolean                         castsShadows;
  111.     TQ3AttenuationType                 attenuation;
  112.     TQ3Point3D                         location;
  113.     TQ3Vector3D                     direction;
  114.     float                             hotAngle;
  115.     float                             outerAngle;
  116.     TQ3FallOffType                     fallOff;
  117. };
  118. typedef struct TQ3SpotLightData            TQ3SpotLightData;
  119. /******************************************************************************
  120.  **                                                                             **
  121.  **                    Light routines (apply to all TQ3LightObjects)             **
  122.  **                                                                             **
  123.  *****************************************************************************/
  124. EXTERN_API_C( TQ3ObjectType )
  125. Q3Light_GetType                    (TQ3LightObject         light);
  126.  
  127. EXTERN_API_C( TQ3Status )
  128. Q3Light_GetState                (TQ3LightObject         light,
  129.                                  TQ3Boolean *            isOn);
  130.  
  131. EXTERN_API_C( TQ3Status )
  132. Q3Light_GetBrightness            (TQ3LightObject         light,
  133.                                  float *                brightness);
  134.  
  135. EXTERN_API_C( TQ3Status )
  136. Q3Light_GetColor                (TQ3LightObject         light,
  137.                                  TQ3ColorRGB *            color);
  138.  
  139. EXTERN_API_C( TQ3Status )
  140. Q3Light_SetState                (TQ3LightObject         light,
  141.                                  TQ3Boolean             isOn);
  142.  
  143. EXTERN_API_C( TQ3Status )
  144. Q3Light_SetBrightness            (TQ3LightObject         light,
  145.                                  float                     brightness);
  146.  
  147. EXTERN_API_C( TQ3Status )
  148. Q3Light_SetColor                (TQ3LightObject         light,
  149.                                  const TQ3ColorRGB *    color);
  150.  
  151. EXTERN_API_C( TQ3Status )
  152. Q3Light_GetData                    (TQ3LightObject         light,
  153.                                  TQ3LightData *            lightData);
  154.  
  155. EXTERN_API_C( TQ3Status )
  156. Q3Light_SetData                    (TQ3LightObject         light,
  157.                                  const TQ3LightData *    lightData);
  158.  
  159.  
  160. /******************************************************************************
  161.  **                                                                             **
  162.  **                            Specific Light Routines                               **
  163.  **                                                                             **
  164.  *****************************************************************************/
  165. /******************************************************************************
  166.  **                                                                             **
  167.  **                            Ambient Light                                       **
  168.  **                                                                             **
  169.  *****************************************************************************/
  170. EXTERN_API_C( TQ3LightObject )
  171. Q3AmbientLight_New                (const TQ3LightData *    lightData);
  172.  
  173. EXTERN_API_C( TQ3Status )
  174. Q3AmbientLight_GetData            (TQ3LightObject         light,
  175.                                  TQ3LightData *            lightData);
  176.  
  177. EXTERN_API_C( TQ3Status )
  178. Q3AmbientLight_SetData            (TQ3LightObject         light,
  179.                                  const TQ3LightData *    lightData);
  180.  
  181.  
  182. /******************************************************************************
  183.  **                                                                             **
  184.  **                        Directional Light                                     **
  185.  **                                                                             **
  186.  *****************************************************************************/
  187. EXTERN_API_C( TQ3LightObject )
  188. Q3DirectionalLight_New            (const TQ3DirectionalLightData * directionalLightData);
  189.  
  190. EXTERN_API_C( TQ3Status )
  191. Q3DirectionalLight_GetCastShadowsState (TQ3LightObject     light,
  192.                                  TQ3Boolean *            castsShadows);
  193.  
  194. EXTERN_API_C( TQ3Status )
  195. Q3DirectionalLight_GetDirection    (TQ3LightObject         light,
  196.                                  TQ3Vector3D *            direction);
  197.  
  198. EXTERN_API_C( TQ3Status )
  199. Q3DirectionalLight_SetCastShadowsState (TQ3LightObject     light,
  200.                                  TQ3Boolean             castsShadows);
  201.  
  202. EXTERN_API_C( TQ3Status )
  203. Q3DirectionalLight_SetDirection    (TQ3LightObject         light,
  204.                                  const TQ3Vector3D *    direction);
  205.  
  206. EXTERN_API_C( TQ3Status )
  207. Q3DirectionalLight_GetData        (TQ3LightObject         light,
  208.                                  TQ3DirectionalLightData * directionalLightData);
  209.  
  210. EXTERN_API_C( TQ3Status )
  211. Q3DirectionalLight_SetData        (TQ3LightObject         light,
  212.                                  const TQ3DirectionalLightData * directionalLightData);
  213.  
  214.  
  215. /******************************************************************************
  216.  **                                                                             **
  217.  **                        Point Light                                              **
  218.  **                                                                             **
  219.  *****************************************************************************/
  220. EXTERN_API_C( TQ3LightObject )
  221. Q3PointLight_New                (const TQ3PointLightData * pointLightData);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3PointLight_GetCastShadowsState (TQ3LightObject         light,
  225.                                  TQ3Boolean *            castsShadows);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3PointLight_GetAttenuation        (TQ3LightObject         light,
  229.                                  TQ3AttenuationType *    attenuation);
  230.  
  231. EXTERN_API_C( TQ3Status )
  232. Q3PointLight_GetLocation        (TQ3LightObject         light,
  233.                                  TQ3Point3D *            location);
  234.  
  235. EXTERN_API_C( TQ3Status )
  236. Q3PointLight_GetData            (TQ3LightObject         light,
  237.                                  TQ3PointLightData *    pointLightData);
  238.  
  239. EXTERN_API_C( TQ3Status )
  240. Q3PointLight_SetCastShadowsState (TQ3LightObject         light,
  241.                                  TQ3Boolean             castsShadows);
  242.  
  243. EXTERN_API_C( TQ3Status )
  244. Q3PointLight_SetAttenuation        (TQ3LightObject         light,
  245.                                  TQ3AttenuationType     attenuation);
  246.  
  247. EXTERN_API_C( TQ3Status )
  248. Q3PointLight_SetLocation        (TQ3LightObject         light,
  249.                                  const TQ3Point3D *        location);
  250.  
  251. EXTERN_API_C( TQ3Status )
  252. Q3PointLight_SetData            (TQ3LightObject         light,
  253.                                  const TQ3PointLightData * pointLightData);
  254.  
  255.  
  256. /******************************************************************************
  257.  **                                                                             **
  258.  **                        Spot Light                                              **
  259.  **                                                                             **
  260.  *****************************************************************************/
  261. EXTERN_API_C( TQ3LightObject )
  262. Q3SpotLight_New                    (const TQ3SpotLightData * spotLightData);
  263.  
  264. EXTERN_API_C( TQ3Status )
  265. Q3SpotLight_GetCastShadowsState    (TQ3LightObject         light,
  266.                                  TQ3Boolean *            castsShadows);
  267.  
  268. EXTERN_API_C( TQ3Status )
  269. Q3SpotLight_GetAttenuation        (TQ3LightObject         light,
  270.                                  TQ3AttenuationType *    attenuation);
  271.  
  272. EXTERN_API_C( TQ3Status )
  273. Q3SpotLight_GetLocation            (TQ3LightObject         light,
  274.                                  TQ3Point3D *            location);
  275.  
  276. EXTERN_API_C( TQ3Status )
  277. Q3SpotLight_GetDirection        (TQ3LightObject         light,
  278.                                  TQ3Vector3D *            direction);
  279.  
  280. EXTERN_API_C( TQ3Status )
  281. Q3SpotLight_GetHotAngle            (TQ3LightObject         light,
  282.                                  float *                hotAngle);
  283.  
  284. EXTERN_API_C( TQ3Status )
  285. Q3SpotLight_GetOuterAngle        (TQ3LightObject         light,
  286.                                  float *                outerAngle);
  287.  
  288. EXTERN_API_C( TQ3Status )
  289. Q3SpotLight_GetFallOff            (TQ3LightObject         light,
  290.                                  TQ3FallOffType *        fallOff);
  291.  
  292. EXTERN_API_C( TQ3Status )
  293. Q3SpotLight_GetData                (TQ3LightObject         light,
  294.                                  TQ3SpotLightData *        spotLightData);
  295.  
  296. EXTERN_API_C( TQ3Status )
  297. Q3SpotLight_SetCastShadowsState    (TQ3LightObject         light,
  298.                                  TQ3Boolean             castsShadows);
  299.  
  300. EXTERN_API_C( TQ3Status )
  301. Q3SpotLight_SetAttenuation        (TQ3LightObject         light,
  302.                                  TQ3AttenuationType     attenuation);
  303.  
  304. EXTERN_API_C( TQ3Status )
  305. Q3SpotLight_SetLocation            (TQ3LightObject         light,
  306.                                  const TQ3Point3D *        location);
  307.  
  308. EXTERN_API_C( TQ3Status )
  309. Q3SpotLight_SetDirection        (TQ3LightObject         light,
  310.                                  const TQ3Vector3D *    direction);
  311.  
  312. EXTERN_API_C( TQ3Status )
  313. Q3SpotLight_SetHotAngle            (TQ3LightObject         light,
  314.                                  float                     hotAngle);
  315.  
  316. EXTERN_API_C( TQ3Status )
  317. Q3SpotLight_SetOuterAngle        (TQ3LightObject         light,
  318.                                  float                     outerAngle);
  319.  
  320. EXTERN_API_C( TQ3Status )
  321. Q3SpotLight_SetFallOff            (TQ3LightObject         light,
  322.                                  TQ3FallOffType         fallOff);
  323.  
  324. EXTERN_API_C( TQ3Status )
  325. Q3SpotLight_SetData                (TQ3LightObject         light,
  326.                                  const TQ3SpotLightData * spotLightData);
  327.  
  328.  
  329.  
  330.  
  331.  
  332. #if PRAGMA_ENUM_ALWAYSINT
  333.     #pragma enumsalwaysint reset
  334. #elif PRAGMA_ENUM_OPTIONS
  335.     #pragma option enum=reset
  336. #elif defined(PRAGMA_ENUM_PACK__QD3DLIGHT__)
  337.     #pragma options(pack_enums)
  338. #endif
  339.  
  340. #if PRAGMA_STRUCT_ALIGN
  341.     #pragma options align=reset
  342. #elif PRAGMA_STRUCT_PACKPUSH
  343.     #pragma pack(pop)
  344. #elif PRAGMA_STRUCT_PACK
  345.     #pragma pack()
  346. #endif
  347.  
  348. #ifdef PRAGMA_IMPORT_OFF
  349. #pragma import off
  350. #elif PRAGMA_IMPORT
  351. #pragma import reset
  352. #endif
  353.  
  354. #ifdef __cplusplus
  355. }
  356. #endif
  357.  
  358. #endif /* __QD3DLIGHT__ */
  359.  
  360.